home *** CD-ROM | disk | FTP | other *** search
/ DS-CD ROM 2 1993 August / DS CD-ROM 2.Ausgabe (August 1993).iso / programm / ds0257 / lib.exe / LONGINT.LIB < prev    next >
Text File  |  1992-02-06  |  2KB  |  227 lines

  1. #IF !LIB4A86
  2. #ELSE
  3. #IF !INTERN_LIB4A86_S
  4. INTERN_LIB4A86_S EQU 01
  5. JMP START
  6. #ENDIF
  7. #ENDIF
  8. #IF !INTERN_CHANGESIGN
  9. INTERN_CHANGESIGN MACRO
  10. NOT #1
  11. NOT #2
  12. ADD #2,01
  13. ADC #1,0
  14. #EM
  15. #ENDIF
  16. ABSDXAX:
  17. OR DH,DH
  18. JS CHANGESIGNDXAX
  19. RET
  20. ABSCXBX:
  21. OR CH,CH
  22. JS CHANGESIGNCXBX
  23. RET
  24. CHANGESIGNCXBX:
  25. INTERN_CHANGESIGN CX,BX
  26. RET
  27. CHANGESIGNDXAX:
  28. INTERN_CHANGESIGN DX,AX
  29. RET
  30. CALCLONGINTPOTENZ:
  31. PUSH BX
  32. OR BX,CX
  33. POP BX
  34. JNZ >L1
  35. XOR DX,DX
  36. XOR AX,AX
  37. INC AX
  38. RET
  39. L1:
  40. PUSH SI
  41. PUSH DI
  42. PUSH BP
  43. MOV BP,01H
  44. MOV SI,DX
  45. MOV DI,AX
  46. OR CX,CX
  47. STC
  48. JS >L9
  49. L0:
  50. SUB BX,BP
  51. SBB CX,0
  52. OR BX,BX
  53. JNE >L01
  54. OR CX,CX
  55. JE >L9
  56. L01:
  57. PUSH BX
  58. PUSH CX
  59. MOV BX,DI
  60. MOV CX,SI
  61. CALL MULLONGINT
  62. POP CX
  63. POP BX
  64. JMP L0
  65. L9:
  66. POP BP
  67. POP DI
  68. POP SI
  69. RET
  70. CMPLONGINT:
  71. CMP DX,CX
  72. JNE >L1
  73. CMP AX,BX
  74. L1:
  75. RET
  76. ADDLONGINT:
  77. ADD AX,BX
  78. ADC DX,CX
  79. RET
  80. SUBLONGINT:
  81. SUB AX,BX
  82. SBB DX,CX
  83. RET
  84. MODLONGINT:
  85. PUSH CX,BX
  86. CALL DIVLONGINT
  87. JC >L1
  88. MOV DX,CX
  89. MOV AX,BX
  90. L1:
  91. POP BX,CX
  92. RET
  93. #IF !INTERN_MULLONGINT_S
  94. INTERN_MULLONGINT_S EQU 01
  95. MULLONGINT:
  96. PUSH DI
  97. PUSH SI
  98. PUSH BP
  99. MOV BP,SP
  100. XOR SI,SI
  101. OR CX,CX
  102. JNS >L1
  103. INTERN_CHANGESIGN CX,BX
  104. INC SI
  105. L1:
  106. OR DX,DX
  107. JNS >L1
  108. INTERN_CHANGESIGN DX,AX
  109. INC SI
  110. L1:
  111. PUSH SI
  112. XOR DI,DI
  113. XOR SI,SI
  114. PUSH AX
  115. PUSH DX
  116. ADD AX,DX
  117. MUL CX
  118. MOV DI,AX
  119. POP AX
  120. MUL BX
  121. ADD DI,AX
  122. POP AX
  123. MUL BX
  124. ADD DX,DI
  125. ADD AX,SI
  126. L90:
  127. POP SI
  128. DEC SI
  129. JNZ >L9
  130. INTERN_CHANGESIGN DX,AX
  131. L9:
  132. MOV SP,BP
  133. POP BP
  134. POP SI
  135. POP DI
  136. RET
  137. #ENDIF
  138. #IF !INTERN_DIVLONGINT_S
  139. INTERN_DIVLONGINT_S EQU 01
  140. DIVLONGINT:
  141. PUSH SI,DI,BP
  142. PUSH BX
  143. OR BX,CX
  144. POP BX
  145. STC
  146. JZ >L9
  147. XOR SI,SI
  148. OR DX,DX
  149. JNS >L1
  150. INTERN_CHANGESIGN DX,AX
  151. INC SI
  152. L1:
  153. OR CX,CX
  154. JNS >L1
  155. INTERN_CHANGESIGN CX,BX
  156. INC SI
  157. INC SI
  158. L1:
  159. PUSH SI
  160. MOV DI,BX
  161. MOV SI,CX
  162. XOR BX,BX
  163. XOR CX,CX
  164. MOV BP,0021H
  165. L0:
  166. RCL BX,1
  167. RCL CX,1
  168. SUB BX,DI
  169. SBB CX,SI
  170. JNB >L1
  171. ADD BX,DI
  172. ADC CX,SI
  173. L1:
  174. CMC
  175. RCL AX,1
  176. RCL DX,1
  177. DEC BP
  178. JNZ L0
  179. POP SI
  180. OR SI,SI
  181. JE >L90
  182. CMP SI,3
  183. JNE >L1
  184. L0:
  185. INTERN_CHANGESIGN CX,BX
  186. JMP >L90
  187. L1:
  188. INTERN_CHANGESIGN DX,AX
  189. CMP SI,1
  190. JE L0
  191. L90:
  192. CLC
  193. L9:
  194. POP BP,DI,SI
  195. RET
  196. #ENDIF
  197. #IF !INTERN_CMARK0
  198. INTERN_CMARK0 EQU 01H
  199. INTERN_CMARK1:
  200. PUSH BP
  201. MOV BP,SP
  202. MOV BX,06H
  203. SUB CH,[BP+SI]
  204. SUB AH,[BX+SI]
  205. DEC SP
  206. DEC CX
  207. INC DX
  208. XOR AL,041H
  209. CMP B[02820H],DH
  210. INC BX
  211. SUB W[BX+SI],SP
  212. INC DX
  213. CS AND B[BP+DI+043H],DL
  214. DEC AX
  215. INC BP
  216. DEC BP
  217. DEC BP
  218. INC BP
  219. PUSH DX
  220. AND B[BP+SI],CH
  221. SUB CH,[BP+SI]
  222. POP DX
  223. MOV SP,BP
  224. POP BP
  225. RET
  226. #ENDIF
  227.